Web2Py তে Authentication (অথেনটিকেশন) এবং Authorization (অথোরাইজেশন) এর জন্য একটি শক্তিশালী এবং সহজ API সরবরাহ করা হয়েছে যা ইউজার ম্যানেজমেন্ট এবং অ্যাপ্লিকেশন পেজে অ্যাক্সেস নিয়ন্ত্রণ করতে সহায়তা করে। Web2Py তে এই API দুটি প্রধান মডিউল, auth এবং acl (Access Control List) ব্যবহার করে কাজ করে।
নিচে Web2Py তে Authentication এবং Authorization API এর বর্ণনা এবং ব্যবহার সংক্রান্ত বিস্তারিত আলোচনা করা হলো।
১. Web2Py Authentication API
Authentication API ব্যবহার করে ইউজারের লগইন, সাইনআপ, পাসওয়ার্ড রিসেট, এবং অন্যান্য নিরাপত্তা সংক্রান্ত কার্যক্রম পরিচালনা করা যায়।
১.১. Auth অবজেক্ট তৈরি করা
Web2Py তে auth মডিউলকে একটি অবজেক্ট হিসেবে তৈরি করতে হয়, যা ইউজার ম্যানেজমেন্টের জন্য ব্যবহৃত হয়। এটি সাধারণত models/db.py ফাইলে তৈরি করা হয়।
# models/db.py
from gluon.tools import Auth
# Authentication অবজেক্ট তৈরি করা
auth = Auth(db)
# ইউজারের জন্য টেবিল তৈরি করা
auth.define_tables(username=True, signature=True)
১.২. লগইন এবং সাইনআপ API
Web2Py তে ইউজার লগইন এবং সাইনআপ খুব সহজে তৈরি করা যায়। auth.login() এবং auth.register() ফাংশন ব্যবহার করে আপনি লগইন এবং সাইনআপ ফর্ম তৈরি করতে পারেন।
লগইন ফাংশন:
# controllers/default.py
def login():
if auth.is_logged_in():
redirect(URL('welcome')) # ইউজার যদি ইতোমধ্যে লগইন থাকে তবে ওয়েলকাম পেজে রিডিরেক্ট
return dict(form=auth.login())
সাইনআপ ফাংশন:
# controllers/default.py
def signup():
return dict(form=auth.register())
১.৩. পাসওয়ার্ড রিসেট API
Web2Py তে auth মডিউল দিয়ে পাসওয়ার্ড রিসেটও করা যায়। auth.reset_password() ফাংশন ব্যবহার করে পাসওয়ার্ড রিসেট ফর্ম তৈরি করা হয়।
# controllers/default.py
def reset_password():
return dict(form=auth.reset_password())
১.৪. লগআউট API
ইউজারকে লগআউট করার জন্য auth.logout() ফাংশন ব্যবহার করা হয়।
# controllers/default.py
def logout():
auth.logout() # ইউজারকে লগআউট করা হবে
redirect(URL('index')) # লগআউট হওয়ার পর হোম পেজে রিডিরেক্ট হবে
১.৫. ইউজারের স্ট্যাটাস চেক করা
auth.is_logged_in() ফাংশন দিয়ে আপনি চেক করতে পারেন ইউজার লগইন আছে কি না:
# controllers/default.py
def index():
if auth.is_logged_in():
return dict(message="Welcome back!")
else:
return dict(message="Please log in.")
২. Web2Py Authorization API
Authorization API ব্যবহার করে আপনি ইউজারের অ্যাক্সেস নিয়ন্ত্রণ করতে পারেন, যেমন ইউজারের রোল, গ্রুপ এবং অনুমতি।
২.১. গ্রুপ তৈরি এবং ইউজার অ্যাসাইনমেন্ট
Web2Py তে ইউজারের জন্য বিভিন্ন গ্রুপ বা রোল তৈরি করা যায়। auth.add_group() ফাংশন ব্যবহার করে গ্রুপ তৈরি করতে পারেন এবং auth.add_membership() ফাংশন ব্যবহার করে ইউজারকে গ্রুপে অ্যাসাইন করা যায়।
গ্রুপ তৈরি এবং ইউজারকে গ্রুপে অ্যাসাইন করা:
# models/db.py
auth.add_group('admin', 'Administrator group with full access')
auth.add_group('manager', 'Manager group with limited access')
# ইউজারকে গ্রুপে অ্যাসাইন করা
auth.add_membership('admin', user_id=1) # ইউজার আইডি 1 কে 'admin' গ্রুপে অ্যাসাইন
২.২. ইউজারের অনুমতি চেক করা
আপনি auth.has_membership() এবং auth.has_permission() ফাংশন ব্যবহার করে ইউজারের গ্রুপ এবং অনুমতি চেক করতে পারেন।
গ্রুপের জন্য অনুমতি চেক করা:
# controllers/default.py
def admin_page():
if auth.has_membership('admin'): # ইউজার 'admin' গ্রুপের সদস্য কিনা তা চেক করা
return dict(message="Welcome to the admin page!")
else:
redirect(URL('index')) # গ্রুপ সদস্য না হলে হোম পেজে রিডিরেক্ট
অনুমতি চেক করা:
# controllers/default.py
def restricted_area():
if not auth.has_permission('admin'): # ইউজারের 'admin' অনুমতি আছে কি না
redirect(URL('index')) # যদি অনুমতি না থাকে, রিডিরেক্ট হবে
return dict(message="You have access to the restricted area.")
২.৩. Authorization এর সাথে পৃষ্ঠার নিরাপত্তা
auth.requires_login() এবং auth.requires_membership() ব্যবহার করে আপনি পৃষ্ঠার নিরাপত্তা সুনিশ্চিত করতে পারেন।
পৃষ্ঠায় লগইন যাচাই করা:
# controllers/default.py
def dashboard():
auth.requires_login() # ইউজারের লগইন থাকা বাধ্যতামূলক
return dict(message="Welcome to your dashboard!")
গ্রুপের জন্য নিরাপত্তা নির্ধারণ করা:
# controllers/default.py
def admin_dashboard():
auth.requires_membership('admin') # 'admin' গ্রুপের জন্য অ্যাক্সেস কন্ট্রোল
return dict(message="Welcome to the admin dashboard!")
৩. Advanced Authorization: Permission Based Access
Web2Py তে আপনি নির্দিষ্ট পৃষ্ঠায় ইউজারের permission অনুযায়ী অ্যাক্সেস নিয়ন্ত্রণ করতে পারেন।
পেমিশন চেক এবং অ্যাক্সেস নিয়ন্ত্রণ:
# controllers/default.py
def restricted_page():
if not auth.has_permission('admin'): # 'admin' পেমিশন না থাকলে
redirect(URL('index')) # ইউজারকে হোম পেজে রিডিরেক্ট করা হবে
return dict(message="You have access to this page.")
সারাংশ
Web2Py তে Authentication এবং Authorization API দিয়ে আপনি:
- Authentication: ইউজারের লগইন, সাইনআপ, পাসওয়ার্ড রিসেট এবং লগআউট পরিচালনা করতে পারেন।
- Authorization: ইউজারের গ্রুপ, রোল এবং অনুমতি নির্ধারণ করে তাদের অ্যাক্সেস নিয়ন্ত্রণ করতে পারেন।
এই API গুলি আপনাকে একটি নিরাপদ, স্কেলেবল এবং কাস্টমাইজড ইউজার ম্যানেজমেন্ট সিস্টেম তৈরি করতে সহায়তা করে, যা ডেভেলপারদের নিরাপত্তা ফিচার সহজে এবং দ্রুত বাস্তবায়ন করতে সাহায্য করে।
Read more